package com.briup.day14;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class IOTest2 {
    public static void main(String[] args) {
        // 将a.txt文件复制10份到同目录下，分别命名为a_1.txt，a_2.txt....
        File file = new File("resource/a.txt");
        // 获取需要复制的文件的父路径，因为复制后的文件也要放置在该路径下
        File parentFile = file.getParentFile();
        // 获取文件的名称，将文件的名字分成前缀和后缀两部分
        String name = file.getName();
        int index = name.lastIndexOf(".");
        // 获取前缀名字
        String prefix = name.substring(0, index);
        // 获取后缀名字
        String suffix = name.substring(index);
        FileWriter[] writers = new FileWriter[10];
        // 读取文件数据
        try (FileReader fr = new FileReader(file)) {
            // 预先创建10个输出流对象，10个文件对应10个目的地，需要和10文件构建连接，
            // 就需要与对应文件创建输出流对象
            for (int i = 1; i <= 10; i++) {
                FileWriter fw = new FileWriter(
                        new File(parentFile,
                                String.format("%s_%s%s", prefix, i, suffix)));
                writers[i - 1] = fw;
            }

            char[] chars = new char[1024];
            int len = -1;
            while ((len = fr.read(chars)) != -1) {
                // 使用foreach循环
                for (FileWriter writer : writers) {
                    writer.write(chars, 0, len);
                    writer.flush();
                }
            }
        } catch (IOException e) {
            System.err.println("出现IO异常:" + e.getMessage());
        } finally {
            for (FileWriter writer : writers) {
                try {
                    writer.close();
                } catch (IOException e) {
                    System.err.println("出现IO异常:" + e.getMessage());
                }
            }
        }
    }

    // 复制一份
    private static void test() {
        try (FileReader fr = new FileReader("resource/a.txt");
             FileWriter fw = new FileWriter("resource/a_1.txt")) {
            // 将从a文件中读取的数据字符数据，写出到b文件中
            char[] chars = new char[1024];
            int len = -1;
            while ((len = fr.read(chars)) != -1) {
                fw.write(chars, 0, len);
                // 刷新
                fw.flush();
            }
        } catch (IOException e) {
            System.err.println("出现IO异常:" + e.getMessage());
        }
    }
}
